Traditionally a computer program, like an application computer program, has been executed on a single computing device, such as a server. While the per-processor costs of computing devices have greatly decreased, advances in performance have slowed. Therefore, more recently, multiple computing devices have begun to be used to distributively execute a computer program in parallel. Large numbers of computing devices have even more recently still been clustered to provide massively parallel processing of computer programs, permitting such clusters to rival the performance of conventional supercomputers.